package com.itfenghuang.day07;

public class A01_匿名内部类 {
    public static void main(String[] args) {
        /**Anonymous Inner Class
         *1.概述
         *      匿名内部类前提条件:
         *              必须有一个类或接口,类可以是普通类也可以是抽象类
         *      匿名内部类格式:
         *          new 类名(){重写方法};   new 接口名(){重写方法}
         *      本质: 该类的子类的对象
         *
         * 2.匿名内部类开发中的使用
         *      当一个方法的方法参数是一个抽象类或接口类型的参数时,我们就可以
         *      传一个匿名内部类过去,这样可以简化开发
         */
            new AnnoClass(){
                @Override
                public void print() {
                    System.out.println("起飞咯");
                }
            }.print();
            //抽象类
//            new Annoclass1(){
//                @Override
//                public void show() {
//                    System.out.println("上上树飞人");
//                }
//            }.show();
            //接口
//            new KooKo(){
//                @Override
//                public void aoo() {
//                }
//            };

        toSwim(new Swim() {
            @Override
            public void goSwimming() {
                System.out.println("冰封");
            }
        });
    }

    public static void toSwim(Swim swim){
        swim.goSwimming();
    }

}

class AnnoClass{
    public void print(){
        System.out.println("爆爆");
    }
}

//abstract class Annoclass1{
//    public abstract void show();
//}

// interface KooKo{
//    public abstract  void aoo();
//}

interface Swim{
    void goSwimming();
}

//class Soo implements Swim {
//    @Override
//    public void goSwimming() {
//
//    }
//}

